//package com.perfma.xtest.tool;
//
//import com.deepoove.poi.XWPFTemplate;
//import com.deepoove.poi.config.Configure;
//import com.deepoove.poi.data.*;
//import com.google.common.collect.Maps;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.compress.utils.Lists;
//
//import java.io.FileOutputStream;
//import java.util.Arrays;
//import java.util.Date;
//import java.util.List;
//import java.util.Map;
//
///**
// * @author: junhui.si
// * @date: 2020-10-23 14:52
// **/
//@Slf4j
//public class WordDemo3 {
//
//    public static void main(String[] args) {
//        try {
//            String inputFileName = TestFileUtil.getPath() + "report-t.docx";
//
//            // 配置，使用spring EL表达式
//            Configure configure = Configure.newBuilder()
//                    .setElMode(Configure.ELMode.SPEL_MODE).build();
//            XWPFTemplate template = XWPFTemplate.compile(inputFileName, configure);
//
//            Map<String, Object> result = Maps.newHashMap();
//            fillBasic(result);
//
//            List<Map<String, Object>> testDataList = Lists.newArrayList();
//            testDataList.add(getTestData("基准"));
//            testDataList.add(getTestData("稳定性-时间趋势"));
//            testDataList.add(getTestData("单场景-并发趋势"));
//            testDataList.add(getTestData("混合场景-并发趋势"));
//            result.put("testDataList", testDataList);
//
//            // 报告结论-测试
//            List<Map<String, Object>> xxList = Lists.newArrayList();
//            xxList.add(getTestDateImg2());
//            xxList.add(getTestDateImg2());
//            xxList.add(getTestDateImg2());
//            List<Map<String, Object>> xList = Lists.newArrayList();
//            Map<String, Object> map1 = Maps.newHashMap();
//            map1.put("xxList",xxList);
//            xList.add(map1);
//            xList.add(map1);
//            result.put("xList", xList);
//            result.put("sList", xxList);
//
//
//            template.render(result);
//
////            template.getXWPFDocument().createTOC();
//            String outputFileName = TestFileUtil.getPath() + "report.docx";
//            FileOutputStream out = new FileOutputStream(outputFileName);
//            template.write(out);
//            out.flush();
//            out.close();
//            template.close();
//        } catch (Exception e) {
//            log.error("error.", e);
//        }
//    }
//
//    public static Map<String, Object> getTestData(String testDataSubTitle) {
//        Map<String, Object> testData = Maps.newHashMap();
//        testData.put("displayStyle", 1);
//        testData.put("remark", "哈哈哈哈哈哈哈哈哈");
//
//        List<Map<String, Object>> tranFormList = Lists.newArrayList();
//        tranFormList.add(getTestDataTable());
//        tranFormList.add(getTestDataTable());
//        testData.put("tranFormList", tranFormList);
//
//        List<Map<String, Object>> tranImageList = Lists.newArrayList();
////        tranImageList.add(getTestDateImg2());
////        tranImageList.add(getTestDateImg2());
//        testData.put("tranChartList", tranImageList);
//
//
//        testData.put("appFormList", tranFormList);
//        testData.put("appImageList", tranImageList);
//        testData.put("testDataSubTitle", testDataSubTitle);
//
//        return testData;
//    }
//
//    public static Map<String, Object> getTestDateImg() {
//        String imgPath = TestFileUtil.getPath() + "1.jpg";
//        Map<String, Object> result = Maps.newHashMap();
//        result.put("image", new PictureRenderData(600, 100, imgPath));
//        return result;
//    }
//
//    public static Map<String, Object> getTestDateImg2() {
//        ChartMultiSeriesRenderData chart = new ChartMultiSeriesRenderData();
//        chart.setChartTitle("MyChart" + System.currentTimeMillis());
//        chart.setCategories(new String[]{"1", "2", "3", "4", "5", "6", "7", "8", "9"});
//        List<SeriesRenderData> seriesRenderData = Lists.newArrayList();
//        seriesRenderData.add(new SeriesRenderData("事务1", new Double[]{15.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0, 6.0}));
//        seriesRenderData.add(new SeriesRenderData("事务2", new Double[]{23.0, 19.0, 19.0, 19.0, 6.0, 36.0, 6.0, 6.0, 6.0}));
//        chart.setSeriesDatas(seriesRenderData);
//
//        Map<String, Object> result = Maps.newHashMap();
//        result.put("chart", chart);
//        return result;
//    }
//
//    public static ChartMultiSeriesRenderData getTestDateImg3() {
//        ChartMultiSeriesRenderData chart = new ChartMultiSeriesRenderData();
//        chart.setChartTitle("MyChart" + System.currentTimeMillis());
//        chart.setCategories(new String[]{"1", "2", "3", "4"});
//        List<SeriesRenderData> seriesRenderData = Lists.newArrayList();
//        seriesRenderData.add(new SeriesRenderData("事务1", new Double[]{15.0, 6.0, 6.0, 6.0}));
//        seriesRenderData.add(new SeriesRenderData("事务2", new Double[]{23.0, 19.0, 19.0, 19.0}));
//        seriesRenderData.add(new SeriesRenderData("事务3", new Double[]{22.0, 11.0, 11.0, 11.0}));
//        chart.setSeriesDatas(seriesRenderData);
//        return chart;
//    }
//
//    public static Map<String, Object> getTestDataTable() {
//        RowRenderData header = RowRenderData.build(
//                new TextRenderData("集群名")
//                , new TextRenderData("所属应用")
//                , new TextRenderData("节点数")
//                , new TextRenderData("IP网址")
//                , new TextRenderData("总CPU数")
//                , new TextRenderData("总内存")
//                , new TextRenderData("总磁盘大小"));
//        RowRenderData row0 = RowRenderData.build("1", "1", "1", "1", "1", "1", "1");
//        RowRenderData row1 = RowRenderData.build("2", "1", "1", "1", "1", "2", "1");
//        Map<String, Object> result = Maps.newHashMap();
//        result.put("a", 1);
//        result.put("form", new MiniTableRenderData(header, Arrays.asList(row0, row1)));
//        return result;
//    }
//
//
//    public static void fillBasic(Map<String, Object> result) {
//        result.put("title", "啦啦啦");
//        result.put("creator", "作者1");
//        result.put("testRequire", "一顿操作瞎写一通1");
//        result.put("reportResult", "一顿操作瞎写一通2");
//        result.put("date", DateUtils.formatDate(new Date(), "yyyy 年 MM 月 dd 日"));
//        // 被测环境
//        RowRenderData header = RowRenderData.build(
//                new TextRenderData("集群名")
//                , new TextRenderData("所属应用")
//                , new TextRenderData("节点数")
//                , new TextRenderData("IP网址")
//                , new TextRenderData("总CPU数")
//                , new TextRenderData("总内存")
//                , new TextRenderData("总磁盘大小"));
//        RowRenderData row0 = RowRenderData.build("1", "1", "1", "1", "1", "1", "1");
//        RowRenderData row1 = RowRenderData.build("2", "1", "1", "1", "1", "2", "1");
//        result.put("testEnvForm", new MiniTableRenderData(header, Arrays.asList(row0, row1)));
//
//
//        // 评估指标
//        RowRenderData header2 = RowRenderData.build(
//                new TextRenderData("评估类型")
//                , new TextRenderData("所属场景")
//                , new TextRenderData("评估对象")
//                , new TextRenderData("指标")
//                , new TextRenderData("要求")
//                , new TextRenderData("允许基线偏移"));
//        List<Map<String, Object>> list = com.google.common.collect.Lists.newArrayList();
//        Map<String, Object> itemMap = Maps.newHashMap();
//        itemMap.put("goalName", "目标1");
//        itemMap.put("goalType", "目标类型1");
//        itemMap.put("indicatorCount", "3");
//        itemMap.put("status", "通过");
//        RowRenderData row11 = RowRenderData.build("1", "1", "1", "1", "1", "1");
//        RowRenderData row12 = RowRenderData.build("2", "1", "1", "1", "1", "2");
//        itemMap.put("form", new MiniTableRenderData(header2, Arrays.asList(row11, row12)));
//        list.add(itemMap);
//
//        Map<String, Object> itemMap2 = Maps.newHashMap();
//        itemMap2.put("goalName", "目标2");
//        itemMap2.put("goalType", "目标类型2");
//        itemMap2.put("indicatorCount", "4");
//        itemMap2.put("status", "不通过");
//        RowRenderData row13 = RowRenderData.build("1", "1", "1", "1", "1", "7777");
//        RowRenderData row14 = RowRenderData.build("2", "1", "1", "1", "2", "3333");
//        itemMap2.put("form", new MiniTableRenderData(header2, Arrays.asList(row13, row14)));
//        list.add(itemMap2);
//
//
//        result.put("evaluationIndicatorList", list);
//    }
//}
